package com.core.cloudbusiness.system.login.service;

import com.core.cloundbusinessapi.system.login.dto.CloudSystemLoginDTO;
import com.core.cloundbusinessapi.system.login.vo.CloudSystemLoginVO;

import javax.servlet.http.HttpServletRequest;

/**
 * @author =====Lqj=====
 * @className CloudSystemLoginService
 * @description 云系统登陆相关接口
 * @create 2024/11/16 13:15
 **/

public interface CloudSystemLoginService {

    /**
     * 云系统登陆接口
     *
     * @param cloudSystemLoginVO 登陆请求参数
     * @return CloudSystemLoginDTO 用户登陆信息
     */
    CloudSystemLoginDTO login(CloudSystemLoginVO cloudSystemLoginVO);

    /**
     * 云系统登陆接口（包含HTTP请求，用于日志记录）
     *
     * @param cloudSystemLoginVO 登陆请求参数
     * @param request HTTP请求
     * @return CloudSystemLoginDTO 用户登陆信息
     */
    CloudSystemLoginDTO login(CloudSystemLoginVO cloudSystemLoginVO, HttpServletRequest request);

    /**
     * 退出接口
     *
     * @param token 令牌
     */
    void exit(String token);

    /**
     * 退出接口（包含HTTP请求，用于日志记录）
     *
     * @param token 令牌
     * @param request HTTP请求
     */
    void exit(String token, HttpServletRequest request);


    /**
     * 发送验证码短信接口
     *
     * @return
     */
    boolean sendSms(String phone);

    /**
     * 刷新Token接口
     *
     * @param oldToken 旧的token
     * @return 新的登录信息
     */
    CloudSystemLoginDTO refreshToken(String oldToken);

    /**
     * 踢出其他设备登录
     *
     * @param token 当前token
     * @return 操作结果
     */
    boolean kickOutOtherDevices(String token);
}
